// 例子50

{
    async function timeout(ms) {
        await new Promise((resolve) => {
            setTimeout(resolve, ms);
        });
    }

    async function asyncPrint(value, ms) {
        await timeout(ms);
        console.log(value);
        console.log('----------------------------------');
    }

    asyncPrint('hello world', 50);
}

{
    //async函数的多种使用形式
    {
        // 函数声明
        async function foo() {};
    }

    {
        // 函数表达式
        const foo = async function () {};
    }


    {
        // 对象的方法
        let obj = {
            async foo() {}
        };
        obj.foo().then(
            //...
        );
    }


    {
        // Class的方法
        class Storage {
            constructor() {
                this.cachePromise = caches.open('avatars');
            }

            async getAvatar(name) {
                const cache = await this.cachePromise;
                return cache.match(`/avatars/${name}.jpg`);
            }
        }
        const storage = new Storage();
        storage.getAvatar('jake').then(
            // ...
        );
    }


    {
        // 箭头函数
        const foo = async () => {};
    }

}